/**
 * 日期格式化，格式为yyyy-MM-dd HH:mm:ss
 * 
 * @param date
 * @returns {String}
 */
Date.prototype.dateConvert = function() {
	var _month = Number(this.getMonth()) + 1;
	var _second = Number(this.getSeconds());
	var _date = Number(this.getDate());
	var _hours = Number(this.getHours());
	var _minutes = Number(this.getMinutes());

	if (_month <= 9) {
		_month = '0' + _month;
	}

	if (_second <= 9) {
		_second = '0' + _second;
	}

	if (_date <= 9) {
		_date = '0' + _date;
	}

	if (_hours <= 9) {
		_hours = '0' + _hours;
	}

	if (_minutes <= 9) {
		_minutes = '0' + _minutes;
	}

	return this.getFullYear() + "-" + _month + "-" + _date + " " + _hours + ":"
			+ _minutes + ":" + _second;
};

Date.prototype.addYear = function(year) {
	this.setFullYear(this.getFullYear() + year);
	return this;
};

/**
 * 跳转到登录界面
 */
function toLogin() {
	location.href = contextPath + "login.jsp";
}

/**
 * easyui ajax error
 */
function uppAjaxError(responseObj) {
	if (responseObj.responseText == "session timeout") {
		toLogin();
	} else {
		top.uppShow("数据加载异常");
	}
}
/**
 * panel扩展前调用，用于panel互斥扩展
 */
function collapseAllPanel() {
	$('.easyui-panel').each(function() {
		$(this).panel('collapse');
	});
}
/**
 * ztree ajax error
 */
function uppZtreeAjaxError(event, treeId, treeNode, XMLHttpRequest, textStatus,
		errorThrown) {
	uppAjaxError(XMLHttpRequest);
}

/**
 * 日期格式化，格式为yyyy-MM-dd
 * 
 * @param date
 *            日期
 * @returns {String}
 */
Date.prototype.simpleDateConvert = function() {
	var _month = this.getMonth() + 1;
	var _date = Number(this.getDate());

	if (_month <= 9) {
		_month = '0' + _month;
	}

	if (_date <= 9) {
		_date = '0' + _date;
	}

	return this.getFullYear() + "-" + _month + "-" + _date;
};

var uppDialog = {
	deleteMsgConfirm : '确定要删除选择的数据吗?',
	selectMsgUnselect : '请选择一条数据后,再进行操作!',
	selectMsgMultiselect : '您选择了多条记录，系统会以第一条记录为准!',
	info : '提示',
	warn : '警告',
	error : '错误',
	icon_info : 'info',
	icon_error : 'error',
	icon_warn : 'warning',
	confirm : function(msg, func) {
		$.messager.confirm(this.info, msg, function(r) {
			if (r) {
				func();
			}
		});
	}
};

var ueditorLocalDomains = [ '127.0.0.1', '192.168.10.103', '192.168.10.102' ];
var ueditorPageBreakTag = '_ueditor_page_break_tag_';
try{
$.extend($.fn.validatebox.defaults.rules, {
	alpha : {
		validator : function(value, param) {
			if (value) {
				return /^[a-zA-Z\u00A1-\uFFFF]*$/.test(value);
			} else {
				return true;
			}
		},
		message : '只能输入字母.'
	},
	alphanum : {
		validator : function(value, param) {
			if (value) {
				return /^([a-zA-Z\u00A1-\uFFFF0-9])*$/.test(value);
			} else {
				return true;
			}
		},
		message : '只能输入字母和数字.'
	},
	positive_int : {
		validator : function(value, param) {
			if (value) {
				return /^[0-9]*[1-9][0-9]*$/.test(value);
			} else {
				return true;
			}
		},
		message : '只能输入正整数.'
	},
	numeric : {
		validator : function(value, param) {
			if (value) {
				return /^[0-9]*(\.[0-9]+)?$/.test(value);
			} else {
				return true;
			}
		},
		message : '只能输入数字和小数点.'
	},
	chinese : {
		validator : function(value, param) {
			if (value) {
				return /[^\u4E00-\u9FA5]/g.test(value);
			} else {
				return true;
			}
		},
		message : '只能输入中文'
	},
	bracket : {
		validator : function(value, param) {
			if (value) {
				return (/^[^<>]*$/g.test(value));
			} else {
				return true;
			}
		},
		message : '不能输入<,>等JS关键符号'
	},
	timeCheck : {
		validator : function(value, param) {
			var s = $("input[name=" + param[0] + "]").val();
			// 因为日期是统一格式的所以可以直接比较字符串 否则需要Date.parse(_date)转换
			if (s == '') {
				return true;
			}
			return value >= s;
		},
		message : '结束日期必须大于或等于开始日期'
	},
	alphaU : {
		validator : function(value, param) {
			if (value) {
				return /^([a-zA-Z_])*$/.test(value);
			} else {
				return true;
			}
		},
		message : '只能输入字母和下划线.'
	},
	trim : {
		validator : function(value, param) {
			if (value) {
				return !(/(^\s*)|(\s*$)/g.test(value));
			} else {
				return true;
			}
		},
		message : '字符前后不能输入空格.'
	}
});
}catch(e){}

/**
 * 替换<,>
 * 
 * @param value
 * @returns
 */
function escapeJavaScript(value) {
	if (value == null || value == '' || value == 'undfined' || !isNaN(value)) {
		return value;
	}

	if (value.indexOf('<') > 0 || value.indexOf('>') > 0
			|| value.indexOf('\'') > 0 || value.indexOf('"') > 0) {
		return value.replace(/</g, '&lt').replace(/>/g, '&gt').replace(/'/g,
				'&apos;').replace(/"/g, '&quot;');
	}

	return value;
}

/**
 * 将datagrid的数据中的< ,> 替换
 * 
 * @param id
 * @param data
 * @returns
 */
function dataConversion(id, data) {
	var fields = $("#" + id).datagrid('getColumnFields');
	if (data.rows != null) {
		for ( var i = 0; i < data.rows.length; i++) {
			for ( var j = 0; j < fields.length; j++) {
				data.rows[i][fields[j]] = escapeJavaScript(data.rows[i][fields[j]]);
			}
		}
	}
	return data;
}

/**
 * 给字符串添加replaceAll方法
 */
String.prototype.replaceAll = function(target, replace) {
	return this.replace(new RegExp(target, "gm"), replace);
};

/**
 * 
 * 给验证框加入基本验证
 */
function initBaseValidate() {
	// 过滤掉特殊字符validType:['bracket','length[0,512]']
	$('.easyui-validatebox').each(function() {
		var valtype = $(this).attr('validType');
		if (valtype) {
			if (valtype.indexOf('length') != -1) {
				$(this).validatebox({
					validType : [ 'bracket', $(this).attr('validType') ]
				});
			}
		} else {
			$(this).validatebox({
				validType : [ 'bracket' ]
			});

		}

	});
}

$(document).ready(
		function() {
			initBaseValidate();
			// 给所有日期插件添加不可编辑属性
			$('.easyui-datetimebox').each(function() {
				$(this).datebox({
					editable : false
				});
			});
			$('.noUserInput').keydown(
					function(e) {
						if (!e) {
							e = window.event;
						}
						var code = e.keyCode;
						if (code != 37 && code != 39 && code != 36
								&& code != 35 && code != 16) {
							return false;
						}
					});
		});

/**
 * 获取某棵树选中的节点
 * @param treeId
 * @returns
 */
function getFisrtSelectTreeNode(treeId) {
	var ztree = $.fn.zTree.getZTreeObj(treeId);
	var nodes = ztree.getSelectedNodes();
	if (nodes.length == 0) {
		return null;
	} else {
		return nodes[0];
	}
}

/**
 * 
 * 把数组用分隔符拼接起来成参数字符窜
 */
function joinRows(rows, paramname, columnName) {

	var len_1 = rows.length - 1;
	var str = "";
	for ( var i = 0; i < len_1; i++) {
		str += paramname + "=" + rows[i][columnName] + "&";
	}
	return str += paramname + "=" + rows[len_1][columnName];
}

/**
 * 日期类型格式化
 * 
 * @param date
 */
function dateFormat(date) {
	return date.dateConvert();
}

/**
 * 标准保存方法
 * 
 * @param formId
 * @param url
 */
function standardSave(formId, url, tabTitle) {
	$('#' + formId).form('submit', {
		onSubmit : function() {
			if (!$(this).form('validate')) {
				return false;
			}
		},
		url : url,
		success : function(data) {
			var _data = jQuery.parseJSON(data);
			top.uppShow(_data.msgDesc);
			if (_data.opResult == 0) {
				top.refreshSpecifiedTab(tabTitle);
				top.closeCurrentTab(top.getCurrentTagTitle());
			}
		},
		error : function(data) {
			uppAjaxError(jQuery.parseJSON(data));
		}
	});
}